问题描述
在符合如下条件的Alibaba Cloud Linux 2实例中,使用NAT之后在特定情况下,存在TCP连接超时1秒的情况,需要使用内核热补丁修复该问题。
镜像:Alibaba Cloud Linux 2.1903 LTS 64位
内核:kernel-4.19.91-25.1.al7及之前的内核版本
iptables的NAT表中配置了目标为REDIRECT的防火墙规则。
当TCP连接超时后,且运行conntrack -S
命令后,insert_failed数值和TCP连接超时次数呈正相关关系,出现如下调用栈信息。
cpu=0 found=291259242 invalid=3597 ignore=10555395 insert=0 insert_failed=4899 drop=4899 early_drop=0 error=0 search_restart=6395
cpu=1 found=288942703 invalid=50582 ignore=7855948 insert=0 insert_failed=4957 drop=4957 early_drop=0 error=0 search_restart=6824
cpu=2 found=273178723 invalid=3255 ignore=10286468 insert=0 insert_failed=4575 drop=4575 early_drop=0 error=0 search_restart=6008
cpu=3 found=252860473 invalid=3410 ignore=8206217 insert=0 insert_failed=4282 drop=4282 early_drop=0 error=0 search_restart=6586
问题原因
当应用程序同时发起多条TCP连接请求时,大量TCP报文经过NAT表并有概率获取到重复的端口。Conntrack模块在确认阶段发现端口存在重复的情况,丢弃了相关的TCP报文。
解决方案
说明
如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
当遇到该问题时,您可以参考以下方案处理:
登录ECS实例,具体操作,请参见连接方式概述。
执行以下命令,确认系统内核版本适用此方案。
uname -r
系统显示类似如下。
4.19.91-18.al7.x86_64
请根据系统内核版本,选择以下对应的解决方法:
对于kernel-4.19.91-22.2.al7(不含)之前的版本
执行以下命令,将操作系统版本更新至最新的内核版本。
yum update kernel
更新内核版本之后,需重启生效,请执行以下命令,重启服务器。
reboot
对于kernel-4.19.91-25.1.al7(含)之前的版本,可通过安装内核热补丁解决,安装命令如下。
yum install -y kernel-hotfix-7776300-`uname -r | awk -F"-" '{print $NF}'`
适用于
云服务器ECS
文档内容是否对您有帮助?